package com.zjwd.common.utils.boq;

/**
 * 清单工具类
 *
 * @author liquan
 */
public class BoqUtils {

    /**
     * 格式化清单排序字段
     * 因清单编号作为排序字段，202-3-f-10 会排在 202-3-f-2前面，因此为了解决这个问题，将数字部分进行前缀补0
     * 202-3-f-10 格式化为 202-003-f-010
     * @param orderNum 排序字段
     * @return 格式化后的排序字段
     */
    public static String formatOrder(String orderNum) {

        if (orderNum == null || orderNum.isEmpty()) {
            return orderNum;
        }

        String[] parts = orderNum.split("-");
        StringBuilder result = new StringBuilder();

        for (String part : parts) {
            // 判断是否为纯数字
            if (isNumeric(part)) {
                int number = Integer.parseInt(part);
                // 根据数值大小补零
                if (number < 10) {
                    // 补2个零 → 003
                    result.append(String.format("%03d", number));
                } else if (number < 100) {
                    // 补1个零 → 055
                    result.append(String.format("%03d", number));
                } else {
                    // 原样保留 → 100
                    result.append(part);
                }
            } else {
                // 非数字部分原样保留
                result.append(part);
            }
            result.append("-");
        }

        // 删除末尾多余的 "-"
        if (result.length() > 0) {
            result.deleteCharAt(result.length() - 1);
        }

        return result.toString();
    }

    /**
     * 判断字符串是否为纯数字
     *
     * @param str 字符串
     * @return 是否为数字
     */
    private static boolean isNumeric(String str) {
        return str != null && str.matches("\\d+");
    }


}
